home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
ivl
/
src
/
ivl_draw.c
< prev
next >
Wrap
Text File
|
2000-06-23
|
3KB
|
138 lines
/*
#define DEBUG
* ivl
*
* 表示関係処理
*
* from Jun. 7,1999 by dummy.x.(with J-SAGA INDUSTRY)
*/
#if 0
注釈:
Jun. 7,1999 にこの処理を組み始めた時点では、私(dum.)は
.PT4 ファイルのデータフォーマットを知りません。
ただ IV.S を参考に、「こんなんじゃないかな」「こういう感じなのかな」
と推測を交えつつ組んでいるだけです。
っつーわけで、ご留意&ご注意を。
#endif
#include <sys\iocs.h>
#include "comtype.h"
#include "easymac.h"
#include "sysconst.h"
#define GRPH_1024
#define GRPH_COLOR_16
#include "scrncom.h"
#include "dummyc.h"
#include "hufilec.h"
#include "libpt4.h"
#include "ivl.h"
/*
* ↓↓↓ グラフィック表示 ↓↓↓
*/
/* PT4 エラーメッセージをグラフィック画面に表示(12x12フォント)
* 引数: msgp - エラーメッセージへのポインタ
* tx,ty - 表示座標(基準値)
*/
void symbol_pt4_error(const char *msgp, ushort tx, ushort ty)
{
static struct _symbolptr symbuf = {
0, 0, NULL, /* 可変(毎回変更される) */
1, 1, 11, SYMBOL_FONT_12, SYMBOL_ROLL_0 /* 固定 */
};
/* 引数値をバッファに設定 */
symbuf.x1 = tx;
symbuf.y1 = ty;
symbuf.string_address = (char *)msgp;
/* 文字列表示 */
_iocs_symbol(&symbuf);
}
/* 文字列を6x12フォント/固定色でグラフィック画面に表示
* 引数: fnamp - ファイル名へのポインタ
* tx,ty - ファイル名表示座標(基準値)
*/
void symbol_6x12(const char *strp, ushort tx, ushort ty)
{
static struct _symbolptr symbuf = {
0, 0, NULL, /* 可変部(毎回変更される) */
1, 1, 11, SYMBOL_FONT_6, SYMBOL_ROLL_0 /* 固定部 */
};
/* 引数値をバッファに設定 */
symbuf.x1 = tx;
symbuf.y1 = ty;
symbuf.string_address = (char *)strp;
/* 文字列表示 */
_iocs_symbol(&symbuf);
}
/* グラフィック画面の矩形範囲を塗り潰す
* 引数: x,y - 始点座標
* w,h - 範囲横幅/縦高
*/
void boxfill_in_area(short x, short y, short w, short h)
{
static struct _fillptr filbuf = {
-1, -1, -1, -1, /* 可変部(毎回変更される) */
0 /* 固定部 */
};
/* 引数値をバッファに設定 */
filbuf.x1 = x;
filbuf.y1 = y;
filbuf.x2 = x + w - 1;
filbuf.y2 = y + h - 1;
/* 描画 */
_iocs_fill(&filbuf);
}
/*
* ↓↓↓ テキスト表示 ↓↓↓
*/
/* 操作ガイドラインに指定のメッセージを表示する
* 引数: mesp - 表示メッセージへのポインタ
* col - 表示色
* topno - 現在値
* maxno - 最大値
* sepch - 現在値と最大値を区切る文字(最下位バイトのみ有効)
*/
#define NUMSTRLEN (3 + 1 + 3) /* "xxx/xxx" */
void print_message_on_guideline(const char *strp, int col, int topno, int maxno, int sepch)
{
char buf[NUMSTRLEN + 1]; /* +1 は最後の '\0' のぶん */
/* ライン消去 */
_iocs_b_locate(0, 31); /* 位置移動 */
_iocs_b_color(0); /* 一旦透明にする */
_iocs_b_era_al(); /* ライン消去 */
/* 操作ガイド */
_iocs_b_color(col);
_iocs_b_print(strp);
/* 現在値/最大値 */
_iocs_b_color(3);
_iocs_b_locate((screen_width / 8) - (NUMSTRLEN + 1), 31); /* +1 はカーソルのため */
/* 表示文字列作成 */
ltodecstr(buf, topno, 3, ' ');
buf[3] = sepch;
ltodecstr(buf + 4, maxno, 3, ' ');
/* 表示 */
_iocs_b_print(buf);
_iocs_b_curoff(); /* カーソル消去 */
}
#undef NUMSTRLEN